package cn.weforward.task;

import java.util.Date;
import java.util.List;

import cn.weforward.common.NameItem;
import cn.weforward.common.NameItems;
import cn.weforward.common.ResultPage;
import cn.weforward.data.UniteId;
import cn.weforward.data.log.BusinessLog;
import cn.weforward.framework.ApiException;

public interface Bug {
	/** 状态-待修正 */
	NameItem STATE_GONNA_AMEND = NameItem.valueOf("待修正", 1);
	/** 状态-待复测 */
	NameItem STATE_GONNA_RETEST = NameItem.valueOf("待复测", 2);
	/** 状态-建议不作修改 */
	NameItem STATE_ADVICE_NO_UPDATE = NameItem.valueOf("建议不作修改", 3);
	/** 状态-申请无法解决 */
	NameItem STATE_APPLY_CANT_SOLVE = NameItem.valueOf("申请无法解决", 4);
	/** 状态-已解决 */
	NameItem STATE_SOLVE = NameItem.valueOf("已解决", 5);
	/** 状态-不作修改 */
	NameItem STATE_NO_UPDATE = NameItem.valueOf("不作修改", 6);
	/** 状态-无法解决 */
	NameItem STATE_CANT_SOLVE = NameItem.valueOf("无法解决", 7);
	/** 状态-重新打开 */
	NameItem STATE_REOPEN = NameItem.valueOf("重新打开", 8);
	/** 状态-全部 */
	NameItems STATES = NameItems.valueOf(STATE_GONNA_AMEND,STATE_GONNA_RETEST,
			STATE_ADVICE_NO_UPDATE,STATE_APPLY_CANT_SOLVE,STATE_SOLVE,STATE_NO_UPDATE,STATE_CANT_SOLVE,STATE_REOPEN);

	/**
	 * 改变bug状态为待修正
	 * @throws ApiException 
	 */
	void gonnaAmend() throws ApiException;
	/**
	 * 改变bug状态为待复测
	 */
	void gonnaRetest() throws ApiException;
	/**
	 * 改变bug状态为建议不作修改
	 */
	void adviceNoUpdate() throws ApiException;
	/**
	 * 改变bug状态为申请无法解决
	 */
	void applyCantSolve() throws ApiException;
	/**
	 * 改变bug状态为已解决
	 */
	void solve() throws ApiException;
	/**
	 * 改变bug状态为不作修改
	 */
	void noUpdate() throws ApiException;
	/**
	 * 改变bug状态为无法解决
	 */
	void cantSolve() throws ApiException;
	/**
	 * 改变bug状态为重新打开
	 */
	void reOpen() throws ApiException;
	
	/**
	 * 修改bug内容
	 */
	void setContent(String content);
	String getContent();
	/**
	 * 修改测试人
	 */
	void setTester(String testeres);
	List<String> getTester();
	/**
	 * 修改处理人
	 */
	void setHandler(String handler);
//	void setHandlers(List<String> handlers);
	List<String> getHandler();
	/**
	 * 修改严重性
	 */
	void setSeverity(String severity);
	String getSeverity();
	/**
	 * 修改版本与平台
	 */
	void setVersionAndPlatform(String versionAndPlatform);
	String getVersionAndPlatform();
	/**
	 * 刷新最后处理时间
	 */
	void refreshLastHandlerTime();
	/**
	 *获取状态 
	 */
	NameItem getState();
	/**
	 * 获取处理人
	 */
	String getCreator();
	/**
	 * 获取最后处理时间
	 */
	Date getLastHandlerTime();
	/**
	 * 获取任务id
	 */
	String getTaskId();
	
	/**
	 * 获取id
	 */
	UniteId getId();
	
	/**
	 * 获取日志列表
	 * @return
	 */
	ResultPage<BusinessLog> getLogs();
	
	
}
